package com.basker.pisces.core.query.meta;

import java.util.ArrayList;

public class TableDescCollection extends ArrayList<TableDesc> {
    private static final long serialVersionUID = -7621308252219971206L;

    private QueryMeta queryMeta;

    public TableDescCollection(QueryMeta queryMeta) {
        this.queryMeta = queryMeta;
    }

    @Override
    public void add(int index, TableDesc table) {
        super.add(index, table);
        this.queryMeta.tableMap.put(table.getName(), table);
    }

    @Override
    public boolean add(TableDesc table) {
        this.queryMeta.tableMap.put(table.getName(), table);
        return super.add(table);
    }

    @Override
    public TableDesc remove(int index) {
        TableDesc table = super.remove(index);
        if (table != null) {
            this.queryMeta.tableMap.remove(table.getName());
        }
        return table;
    }

    @Override
    public boolean remove(Object o) {
        boolean b = super.remove(o);
        if (o instanceof TableDesc) {
            this.queryMeta.tableMap.remove(((TableDesc) o).getName());
        }
        return b;
    }
}
